'use strict';

exports.main = async (event, context) => {
  const db = uniCloud.database();
  const {
    page = 1,
    pageSize = 10,
    type = '',      // 任务类型筛选
    status = '',    // 任务状态筛选
    audit_status = '', // 审核状态筛选
    keyword = '',   // 关键词搜索
    isAdmin = false, // 是否管理员查询
    showAll = false  // 是否显示所有任务（包括不可见的）
  } = event;

  let where = {};
  
  // 非管理员只能看到可见的任务
  if (!isAdmin && !showAll) {
    where.is_visible = true;
  }
  
  // 筛选条件
  if (type && type !== 'all') where.type = type;
  if (status) where.status = status;
  if (audit_status) where.audit_status = audit_status;
  if (keyword) {
    // 支持标题/描述模糊搜索
    where = {
      ...where,
      $or: [
        { title: new RegExp(keyword, 'i') },
        { description: new RegExp(keyword, 'i') }
      ]
    };
  }

  // 分页查询
  const collection = db.collection('taskList');
  const totalRes = await collection.where(where).count();
  const total = totalRes.total;

  const res = await collection
    .where(where)
    .orderBy('publish_time', 'desc')
    .skip((page - 1) * pageSize)
    .limit(pageSize)
    .get();

  // 字段映射：将数据库字段映射为前端需要的字段名
  const mappedData = res.data.map(item => ({
    _id: item._id, // 保持_id字段用于前端识别
    id: item._id, // _id 映射为前端的 id
    type: item.type,
    title: item.title,
    description: item.description,
    reward: item.reward,
    status: item.status,
    publisher_id: item.publisher_id,
    publisher_name: item.publisher_name || item.user_name || '未知用户', // 直接提供publisher_name字段
    user_name: item.user_name || item.publisher_name || '未知用户', // 兼容字段
    publisher: { // 嵌套对象，对应前端 task.publisher.nickname/avatar
      nickname: item.publisher_name || item.user_name || '未知用户',
      avatar: item.publisher_avatar
    },
    publish_time: item.publish_time, // 保持原字段名
    publishTime: item.publish_time, // publish_time 映射为 publishTime
    // 审核相关字段 - 重要！确保前台能获取到审核状态
    audit_status: item.audit_status || 'pending', // 审核状态
    audit_time: item.audit_time, // 审核时间
    audit_admin: item.audit_admin, // 审核管理员
    reject_reason: item.reject_reason || '', // 拒绝理由
    isUrgent: item.is_urgent || false, // is_urgent 映射为 isUrgent
    tags: item.tags || [],
    pickupAddress: item.pickup_address || '', // 快递/外卖取件地址
    deliveryAddress: item.delivery_address || '', // 快递/外卖送达地址
    expectedDeliveryTime: item.expected_time || '', // 期望送达时间
    itemName: item.item_name || '', // 出物/求购物品名称
    selectedCategory: item.selected_category || '', // 出物/求购物品类别
    selectedCondition: item.selected_condition || '', // 出物/求购物品成色
    contactName: item.contact_name || '',
    contactPhone: item.contact_phone || '',
    images: item.images || [], // 商品图片
    duration: item.duration || 0, // 有效期
    views: item.views || 0, // 浏览量
    update_time: item.update_time, // 更新时间
    is_visible: item.is_visible !== false, // 是否可见
    is_published: item.is_published !== false, // 是否已发布
    // 其他可能需要的字段可以继续添加
  }));

  // 日志输出，便于调试
  console.log('[getTaskList] where:', where, 'total:', total, 'data.length (mapped):', mappedData.length);
  console.log('[getTaskList] audit_status filter:', audit_status);

  return {
    code: 200,
    msg: 'success',
    data: mappedData, // 返回映射后的数据
    total: total || 0
  };
};
